package com.ruoyi.odorservice.service;

import com.ruoyi.odorservice.model.bean.SiteMaterialConcentrationBean;
import com.ruoyi.odorservice.model.vo.MaterialTotalTrendVo;
import com.ruoyi.odorservice.model.vo.OdorActivityAnalysisVo;
import com.ruoyi.odorservice.model.vo.OdorousMaterialVo;
import com.ruoyi.odorservice.model.vo.*;

import java.time.LocalDateTime;
import java.util.List;

import com.ruoyi.common.core.domain.Result;


public interface AnalysisService {
    /**
     *
     * 总量趋势分析
     * @param start
     * @param end
     * @param siteName
     * @return
     */
    List<MaterialTotalTrendVo> totalTrend(LocalDateTime start, LocalDateTime end, String siteName);

    /**
     * 气味活度分析
     * @param start
     * @param end
     * @param siteName
     * @return
     */
    List<OdorActivityAnalysisVo> odorActivity(LocalDateTime start, LocalDateTime end, String siteName);

    /**
     * 相关性分析
     * @param start
     * @param end
     * @param siteName
     * @return
     */
    List<CorrelationAnalysisVo> relevanceAnalysis(LocalDateTime start, LocalDateTime end, String siteName);

    /**
     * 致臭物质名单
     * @param page
     * @param limit
     * @param start
     * @param end
     * @param siteName
     * @return
     */
    OdorousMaterialVo odorousMaterialList(Integer page, Integer limit, LocalDateTime start, LocalDateTime end, String siteName);

    /**
     * 导出致臭物质名单Excel
     * @param start
     * @param end
     * @param page
     * @param limit
     * @param siteName
     * @return
     */
    List<OdorousMaterialVo.OdorousMaterial> getOdorousMaterialListExcel(LocalDateTime start, LocalDateTime end, Integer page, Integer limit, String siteName);

    Result<List<SiteComparisonVo>> siteComparisonAnalysis(String startTime, String endTime, String siteName);

    Result<ConcentrationContributionVo> concentrationContributions(String startTime, String endTime, String siteName, Integer page, Integer limit);

    Result<List<OdorProfileVo>> odorProfile(String startTime, String endTime);

    ClusterAnalysisVo clusterAnalysis(String startTime, String endTime, Integer clusterNum);

    List<ConcentrationContributionVo.SimpleMaterial> getConcentrationContributionsExcel(String startTime, String endTime, Integer page, Integer limit, String siteName);

}
